package com.hsmpay.mobile.util;

import com.hsmpay.common.pojo.user.User;

import java.util.*;

/**
 * 使用session中的用户
 * 现在暂时使用该方法 实现用户登录唯一
 *
 * @author 颜铃璋
 */
public class SessionOnlineUser {
    private static long count = 0l;
    private static Set<User> onlineUserSet = new HashSet<User>();
    private static Map<Long, User> onlineUserMap = new HashMap<Long, User>();

    /**
     * 添加用户
     *
     * @param user
     */
    public static void addUser(User user) {
        /*Iterator<User> itr =  onlineUserSet.iterator();
		User temp = null;
		Long userId = user.getId(); 
		if(userId == null) return;
		while(itr.hasNext()){
			temp = (User) itr.next();
			if(userId.equals(temp.getId())){
				itr.remove();
			}
		}
		onlineUserSet.add(user);*/
        onlineUserMap.put(user.getId(), user);
    }

    /**
     * 删除用户
     */
    public static void removeUser(User user) {
		/*onlineUserSet.remove(user);*/
        onlineUserMap.remove(user.getId());
    }


    /**
     * 根据登录时间 判断登录先后
     *
     * @param user
     * @return
     */
    public static boolean isOld(User user) {
		/*Iterator<User> itr =  onlineUserSet.iterator();
		User temp = null;
		Long userId = user.getId();
		Date createDate = user.createDate;
		if(userId == null) return false;
		while(itr.hasNext()){
			temp = (User) itr.next();
			if(userId.equals(temp.getId()) && createDate.before(temp.createDate)){
				return true;
			}
		}*/
        User temp = onlineUserMap.get(user.getId());
        Date createDate = user.createDate;
        if (null != temp && createDate.before(temp.createDate)) {
            return true;
        }
        return false;
    }

    /**
     * 登录在线人数增加
     */
    public static void increase() {
        count++;
    }

    /**
     * 推出登录 在线人数递减
     */
    public static void decrease() {
        count--;
    }

    /**
     * 获取用户数
     *
     * @return
     */
    public static long getOnlineCount() {
        return count - 1;//
    }

    /**
     * 获取 在线用户列表
     */
    public static Set<User> getOnlineUserSet() {
        return onlineUserSet;
    }
}
